package yh.aop.demo.Annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author yangheng
 * @version 1.0
 * @date 2024/7/15 20:45
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DoubleCache {
    /**
     * 缓存key名称
     */
    String cacheName();

    /**
     * 支持 el表达式
     */
    String[] key();

    /**
     * 过期时间
     */
    long expireTime() default 120;

    /**
     * 操作缓存类型
     */
    CacheType type() default CacheType.FULL;

    enum CacheType {
        /**
         * 存取
         */
        FULL,
        /**
         * 只存
         */
        PUT,
        /**
         * 删除
         */
        DELETE
    }
}
